package com.shu.logsearch.es.service;

import com.shu.logsearch.es.model.Doc;

import java.util.List;
import java.util.Map;

/**
 * @author Tree Cai
 * @date 2019/6/27
 */
public interface ESRestService {

    /**
     * 创建索引
     * @param index
     *      索引名称
     * @param shardNum
     *      分片数量
     * @param replicNum
     *      副本数量
     * @param jsonSource
     * @return
     */
    Boolean addIndex(String index, int shardNum, int replicNum,  String jsonSource);

    /**
     * 删除索引
     *
     * @param index
     * @return
     */
    Boolean deleteIndex(String index);

    /**
     * 向索引添加记录
     *
     * @param index
     *      索引名称
     * @param docList
     *      记录列表
     * @return
     */
    Boolean indexDocs(String index, List<Doc> docList);


    /**
     * 向索引添加记录
     *
     * @param index
     *      索引名称
     * @param docJsonStr
     *      json格式的记录
     * @return
     */
    Boolean indexDocs(String index, String docJsonStr);

    /**
     * 查找记录
     * @param indices
     *      多个索引名称
     * @param keyWord
     *      搜索关键字
     * @param fieldNames
     *      搜索的域的名称
     * @param pageNum
     *      每页记录数
     * @param pageSize
     *      第几页
     * @return
     */
    List<Map<String,Object>> searchDocs(String[] indices, String keyWord, String[] fieldNames, int pageNum, int pageSize);


    /**
     * 是否存在该索引
     *
     * @param index
     *      索引名称
     * @return
     */
    Boolean existIndex(String index);
}
